package com.example.designPattern.singleton;

/*
 * @Project:DesignPattern.Singleton
 * @Creator:Administrator
 * @Description:
 * @Date Created in 22:02 2018/11/5
 */
/*
*不过一般来说，第一种不算单例，第四种和第三种就是一种，如果算的话，第五种也可以分开写了。
* 所以说，一般单例都是五种写法。懒汉，饿汉，双重校验锁，枚举和静态内部类。

 -单例对象 占用资源少，不需要延时加载，枚举 好于 饿汉
 -单例对象 占用资源多，需要延时加载，静态内部类 好于 懒汉式

 备注：

1. 全局共享，独一份；

2. 构造函数不暴露（如果暴露便不能保证一份），自己负责自己的构造；

3. 懒汉式：Lazy load，用到才加载，非线程安全。如何保证线程安全呢：

（1） synchronized getInstance()。

（2）双重检查加锁（volatile）。

4. 饿汉式：一开始就申请好，浪费了点资源，但其线程安全。

5. Holder模式：

（1）改成内部类，由JVM保证线程安全性。
 */

//注册式单例
public enum  EnumSingleton {
    INSTANCE;
    public void whateverMethod(){}
}
